﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CheccCoverplateCulvertAssemble.Common.Total
{
    /// <summary>
    /// 八字墙
    /// </summary>
    public class CommonAliformWall : MyNotifyPropertyChanged
    {
        private AliformWallBase _aliformWallLeft = new AliformWallBase();
        private AliformWallBase _aliformWallRight = new AliformWallBase();

        public CommonAliformWall()
        {
        }

        public CommonAliformWall(AliformWallBase aliformWallLeft, AliformWallBase aliformWallRight)
        {
            AliformWallLeft = aliformWallLeft;
            AliformWallRight = aliformWallRight;
        }

        /// <summary>
        /// 左洞口
        /// </summary>
        public AliformWallBase AliformWallLeft
        {
            get
            {
                return _aliformWallLeft;
            }
            set
            {
                if (value == _aliformWallLeft)
                    return;
                _aliformWallLeft = value;
                NotifyPropertyChanged(() => AliformWallLeft);
            }
        }
        /// <summary>
        /// 右洞口
        /// </summary>
        public AliformWallBase AliformWallRight
        {
            get
            {
                return _aliformWallRight;
            }
            set
            {
                if (value == _aliformWallRight)
                    return;
                _aliformWallRight = value;
                NotifyPropertyChanged(() => AliformWallRight);
            }
        }
    }
    public class AliformWallBase : MyNotifyPropertyChanged
    {
        private double _insideEdge;
        private double _burialDepth;
        private double _pavelLengthen;
        private double _outSideEdge;
        private double _veticalWidth;
        private double _minCrossProfileHeight;
        private double _baseThickness;
        private double _cutoffWallHeight;
        private double _paveThickness;
        private int _contraryAngle;
        private int _obeyAngle;
        private double _carryingCapacity;
        private double _verticalBackSlope;
        private double _addLenght;
        private double _entranceCaveSlope;
        private double _cutoffWallThickness;
        private double _culvertInEdge;

        public AliformWallBase()
        {
        }

        public AliformWallBase(double insideEdge, double burialDepth, double pavelLengthen, double outSideEdge, double veticalWidth, double minCrossProfileHeight, double baseThickness, double cutoffWallHeight, double paveThickness, int contraryAngle, int obeyAngle, double carryingCapacity, double verticalBackSlope, double addLenght, double entranceCaveSlope, double cutoffWallThickness)
        {
            InsideEdge = insideEdge;
            BurialDepth = burialDepth;
            PavelLengthen = pavelLengthen;
            OutSideEdge = outSideEdge;
            VeticalWidth = veticalWidth;
            MinCrossProfileHeight = minCrossProfileHeight;
            BaseThickness = baseThickness;
            CutoffWallHeight = cutoffWallHeight;
            PaveThickness = paveThickness;
            ContraryAngle = contraryAngle;
            ObeyAngle = obeyAngle;
            CarryingCapacity = carryingCapacity;
            VerticalBackSlope = verticalBackSlope;
            AddLenght = addLenght;
            EntranceCaveSlope = entranceCaveSlope;
            CutoffWallThickness = cutoffWallThickness;
        }


        /// <summary>
        /// 洞口内侧襟边
        /// </summary>
        public double CulvertInEdge
        {
            get
            {
                return _culvertInEdge;
            }
            set
            {
                if (value == _culvertInEdge)
                    return;
                _culvertInEdge = value;
                NotifyPropertyChanged(() => CulvertInEdge);
            }
        }


        /// <summary>
        /// 截水墙厚
        /// </summary>
        public double CutoffWallThickness
        {
            get
            {
                return _cutoffWallThickness;
            }
            set
            {
                if (value == _cutoffWallThickness)
                    return;
                _cutoffWallThickness = value;
                NotifyPropertyChanged(() => CutoffWallThickness);
            }
        }


        /// <summary>
        /// 洞口铺砌坡度
        /// </summary>
        public double EntranceCaveSlope
        {
            get
            {
                return _entranceCaveSlope;
            }
            set
            {
                if (value == _entranceCaveSlope)
                    return;
                _entranceCaveSlope = value;
                NotifyPropertyChanged(() => EntranceCaveSlope);
            }
        }


        /// <summary>
        /// 铺砌加长
        /// </summary>
        public double AddLenght
        {
            get
            {
                return _addLenght;
            }
            set
            {
                if (value == _addLenght)
                    return;
                _addLenght = value;
                NotifyPropertyChanged(() => AddLenght);
            }
        }


        /// <summary>
        /// 基础内侧襟边
        /// </summary>
        public double InsideEdge
        {
            get
            {
                return _insideEdge;
            }
            set
            {
                if (value == _insideEdge)
                    return;
                _insideEdge = value;
                NotifyPropertyChanged(() => InsideEdge);
            }
        }

        /// <summary>
        /// 基础埋深
        /// </summary>
        public double BurialDepth
        {
            get
            {
                return _burialDepth;
            }
            set
            {
                if (value == _burialDepth)
                    return;
                _burialDepth = value;
                NotifyPropertyChanged(() => BurialDepth);
            }
        }

        /// <summary>
        /// 铺砌加长
        /// </summary>
        public double PavelLengthen
        {
            get
            {
                return _pavelLengthen;
            }
            set
            {
                if (value == _pavelLengthen)
                    return;
                _pavelLengthen = value;
                NotifyPropertyChanged(() => PavelLengthen);
            }
        }

        /// <summary>
        /// 基础外侧襟边
        /// </summary>
        public double OutSideEdge
        {
            get
            {
                return _outSideEdge;
            }
            set
            {
                if (value == _outSideEdge)
                    return;
                _outSideEdge = value;
                NotifyPropertyChanged(() => OutSideEdge);
            }
        }

        /// <summary>
        /// 翼墙顶垂直宽
        /// </summary>
        public double VeticalWidth
        {
            get
            {
                return _veticalWidth;
            }
            set
            {
                if (value == _veticalWidth)
                    return;
                _veticalWidth = value;
                NotifyPropertyChanged(() => VeticalWidth);
            }
        }

        /// <summary>
        /// 八字墙最低截面高度
        /// </summary>
        public double MinCrossProfileHeight
        {
            get
            {
                return _minCrossProfileHeight;
            }
            set
            {
                if (value == _minCrossProfileHeight)
                    return;
                _minCrossProfileHeight = value;
                NotifyPropertyChanged(() => MinCrossProfileHeight);
            }
        }

        /// <summary>
        /// 翼墙基础厚度
        /// </summary>
        public double BaseThickness
        {
            get
            {
                return _baseThickness;
            }
            set
            {
                if (value == _baseThickness)
                    return;
                _baseThickness = value;
                NotifyPropertyChanged(() => BaseThickness);
            }
        }

        /// <summary>
        /// 截水墙高(含铺砌)
        /// </summary>
        public double CutoffWallHeight
        {
            get
            {
                return _cutoffWallHeight;
            }
            set
            {
                if (value == _cutoffWallHeight)
                    return;
                _cutoffWallHeight = value;
                NotifyPropertyChanged(() => CutoffWallHeight);
            }
        }

        /// <summary>
        /// 洞口铺砌厚度
        /// </summary>
        public double PaveThickness
        {
            get
            {
                return _paveThickness;
            }
            set
            {
                if (value == _paveThickness)
                    return;
                _paveThickness = value;
                NotifyPropertyChanged(() => PaveThickness);
            }
        }

        /// <summary>
        /// 逆翼墙外偏角
        /// </summary>
        public int ContraryAngle
        {
            get
            {
                return _contraryAngle;
            }
            set
            {
                if (value == _contraryAngle)
                    return;
                _contraryAngle = value;
                NotifyPropertyChanged(() => ContraryAngle);
            }
        }

        /// <summary>
        /// 顺翼墙外偏角
        /// </summary>
        public int ObeyAngle
        {
            get
            {
                return _obeyAngle;
            }
            set
            {
                if (value == _obeyAngle)
                    return;
                _obeyAngle = value;
                NotifyPropertyChanged(() => ObeyAngle);
            }
        }

        /// <summary>
        /// 地基承载力基本值
        /// </summary>
        public double CarryingCapacity
        {
            get
            {
                return _carryingCapacity;
            }
            set
            {
                if (value == _carryingCapacity)
                    return;
                _carryingCapacity = value;
                NotifyPropertyChanged(() => CarryingCapacity);
            }
        }

        /// <summary>
        /// 翼墙垂直背坡
        /// </summary>
        public double VerticalBackSlope
        {
            get
            {
                return _verticalBackSlope;
            }
            set
            {
                if (value == _verticalBackSlope)
                    return;
                _verticalBackSlope = value;
                NotifyPropertyChanged(() => VerticalBackSlope);
            }
        }

    }
}
